說到Go最精華的部分就是concurrency的部分了
包含的範圍蠻廣的,當初在看的時候也是看得滿頭包,但總結可以分成下列幾個
只需要加上關鍵字go
go func()
要使用make
chan:=make(chan Type, Cap)
Channel又可以分成
宣告channel最後總結是下列這樣
unBufferedIntChan:=make(chan int)
bufferedStringChan:=make(chan string, 100)
channel可以分成三種類別
關鍵符號是 <-
比較好判斷的方法就是看箭頭指向哪
而雙向channel傳入function時可以被轉換成單向channel
但是單向channel回傳沒辦法再轉換成雙向channel
閉關channel,使用close(channel)
ch:=make(chan int)
close(ch)
透過channel賦值跟一般宣告的方法一樣,不過多上一個parameter可以判斷channel是否已經閉關
ch:=make(chan int)
val,ok:=<-ch
if ok{
log.Println(val)
}